package 简单算法;

/**
 * @Author: 胡成
 * @Version: 0.0.1V
 * @Date: 2019-05-16
 * @Description: 设计一个算法，计算出n阶乘中尾部零的个数
 **/
public class 尾部的零 {
    public static void main(String[] args) {
        System.out.println(trailingZeros(5));
    }

    public static long trailingZeros(long n) {
        // write your code here, try to do it without arithmetic operators.
        //可以将每个数拆分成其素因子的乘积，可以发现，0是由2*5产生的，而5的数量一定小于2的数量，因此5的个数决定了结尾0的个数。
        //只要计算n的阶乘中，5这个素因子出现多少次即可。
        long sum = 0;
        while (n != 0) {
            sum += n / 5;
            n /= 5;
        }
        return sum;
    }
}
